angular.module('kityminderEditor').controller('image.ctrl', [
  '$http',
  '$scope',
  '$modalInstance',
  'image',
  'server',
  function ($http, $scope, $modalInstance, image, server) {
    $scope.data = {
      list: [],
      url: image.url || '',
      title: image.title || '',
      R_URL: /^https?\:\/\/\w+/,
    };

    setTimeout(function () {
      var $imageUrl = $('#image-url');
      $imageUrl.focus();
      $imageUrl[0].setSelectionRange(0, $scope.data.url.length);
    }, 300);

    // 搜索图片按钮点击事件
    $scope.searchImage = function () {
      $scope.list = [];

      getImageData()
        .success(function (json) {
          if (json && json.data) {
            for (var i = 0; i < json.data.length; i++) {
              if (json.data[i].objURL) {
                $scope.list.push({
                  title: json.data[i].fromPageTitleEnc,
                  src: json.data[i].middleURL,
                  url: json.data[i].middleURL,
                });
              }
            }
          }
        })
        .error(function () {});
    };

    // 选择图片的鼠标点击事件
    $scope.selectImage = function ($event) {
      var targetItem = $('#img-item' + this.$index);
      var targetImg = $('#img-' + this.$index);

      targetItem.siblings('.selected').removeClass('selected');
      targetItem.addClass('selected');

      $scope.data.url = targetImg.attr('src');
      $scope.data.title = targetImg.attr('alt');
    };

    // 自动上传图片，后端需要直接返回图片 URL
    $scope.uploadImage = function () {
      var fileInput = $('#upload-image');
      if (!fileInput.val()) {
        return;
      }
      if (/^.*\.(jpg|JPG|jpeg|JPEG|gif|GIF|png|PNG)$/.test(fileInput.val())) {
        var file = fileInput[0].files[0];
        return server.uploadImage(file).then(function (json) {
          var resp = json.data;
          if (resp.errno === 0) {
            $scope.data.url = resp.data.url;
          }
        });
      } else {
        alert('后缀只能是 jpg、gif 及 png');
      }
    };

    $scope.shortCut = function (e) {
      if (e.keyCode == 13) {
        e.stopPropagation();
        $scope.ok();
      } else if (e.keyCode == 27) {
        e.stopPropagation();
        $scope.cancel();
      }
    };

    $scope.ok = function () {
      if ($scope.data.R_URL.test($scope.data.url)) {
        $modalInstance.close({
          url: $scope.data.url,
          title: $scope.data.title,
        });
      } else {
        $scope.urlPassed = false;

        var $imageUrl = $('#image-url');
        if ($imageUrl) {
          $imageUrl.focus();
          $imageUrl[0].setSelectionRange(0, $scope.data.url.length);
        }
      }

      editor.receiver.selectAll();
    };

    $scope.cancel = function () {
      $modalInstance.dismiss('cancel');
      editor.receiver.selectAll();
    };

    function getImageData() {
      var key = $scope.data.searchKeyword2;
      var currentTime = new Date();
      var url =
        'http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&fp=result&queryWord=' +
        key +
        '&cl=2&lm=-1&ie=utf-8&oe=utf-8&st=-1&ic=0&word=' +
        key +
        '&face=0&istype=2&nc=1&pn=60&rn=60&gsm=3c&' +
        currentTime.getTime() +
        '=&callback=JSON_CALLBACK';

      return $http.jsonp(url);
    }
  },
]);
